namespace Drill.Extensibility
{
    /// <summary>
    /// Defines how a DrillBit is configured.
    /// </summary>
    /// <remarks>
    /// A DrillBit may not support all configuration methods. 
    /// All DrillBits must at least support the Default 
    /// configuration method value.
    /// </remarks>
    public enum DrillBitConfigMethod
    {
        /// <summary>
        /// The configuration method is unknown and is not defined.
        /// </summary>
        Unknown = -1, 

        /// <summary>
        /// The default configuration method of the DrillBit is used. 
        /// The configuration object may be null or an instance of a type that the 
        /// DrillBit expects in order to perform its configuration tasks.
        /// </summary>
        Default = 0, 

        /// <summary>
        /// The default configuration file (e.g. App.Config, Web.config) is used to 
        /// configure the DrillBit. The configuration object should be null.
        /// </summary>
        ConfigFile, 
        
        /// <summary>
        /// A configuration file in a custom location is used to configure the DrillBit. 
        /// The configuration object must be the absolute path and file name of the configuration file.
        /// </summary>
        ConfigFileWithCustomLocation,

		/// <summary>
		/// A custom DrillBit setup implementation is used to configure the DrillBit.
		/// The configuration value is the assembly-qualified type name to the type implenting 
		/// <see cref="IDrillBitSetup"/> that will be instantiated and executed.
		/// </summary>
		DrillBitSetup, 
        
        /// <summary>
        /// A literal XML string is used to configure the DrillBit. 
        /// The configuration object must be the literal XML string representing the configuration 
        /// expected by the DrillBit.
        /// </summary>
        Xml, 

        /// <summary>
        /// An XML file is used to configure the DrillBit. 
        /// The configuration object must be the absolute path and file name of the XML file.
        /// </summary>
        XmlFile
    }
}